iT邦幫忙

2026 iThome 鐵人賽

DAY 26
0
ChatGPT & Codex

窮鬼冰箱升級計劃系列 第 26 篇

【Day 26】System Health Dashboard

  • 分享至 

  • xImage
  •  

目的

希望用一個頁面,來查看整個系統的狀態,所以需要實作頁面,監看整套冰箱下的四大類資源。

System
├── Hardware
    ├── CPU Temperature
    ├── Disk
    └── Meshtastic USB

├── Operating System
    ├── CPU Usage
    ├── RAM Usage
    └── Uptime

├── Network
    ├── LAN
    ├── Internet
    └── Wi-Fi / Ethernet

├── Application
    ├── FastAPI
    ├── SQLite
    ├── Photo Storage
    └── Last ESP32 Upload

透過純文字的方式顯示如下 (也方便呈現在 LED 螢幕)

┌─────────────────────────────────────┐
│ 🧊 beggarFridge System Health       │
│                                     │
│ Overall Status              HEALTHY │
├─────────────────────────────────────┤
│ Raspberry Pi                        │
│ CPU       18%                       │
│ RAM       43%                       │
│ Temp      51.2°C                    │
│ Disk      37%                       │
│ Uptime    4d 08h                    │
├─────────────────────────────────────┤
│ Network                             │
│ LAN             OK                  │
│ Internet        OK                  │
│ Meshtastic      OK                  │
├─────────────────────────────────────┤
│ Services                            │
│ FastAPI         OK                  │
│ SQLite          OK                  │
│ ESP32 Camera     OK                 │
│ Last Upload     2 min ago           │
└─────────────────────────────────────┘

Design API / OS

透過 psutil 套件抓取用量

import psutil


cpu_percent = psutil.cpu_percent(
    interval=0.5
)

memory = psutil.virtual_memory()

print(
    "CPU:",
    cpu_percent,
)

print(
    "RAM:",
    memory.percent,
)

Design API / Raspberry Pi

from pathlib import Path


def get_cpu_temperature():

    path = Path(
        "/sys/class/thermal/"
        "thermal_zone0/temp"
    )

    value = int(
        path.read_text().strip()
    )

    return value / 1000

上一篇
【Day 25】Meshtastic 做 Failover Alert
系列文
窮鬼冰箱升級計劃 共 26 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言